﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using QuizzAdminData;

namespace QuizzAdmin
{
    public partial class MaakTeamForm : Form
    {
        private List<Speler> spelers;
        private List<Team> teams;

        public MaakTeamForm()
        {
            InitializeComponent();
        }

        private void MaakTeamForm_Load(object sender, EventArgs e)
        {
            try
            {
                spelers = SpelersDB.GetSpelers();

                if (spelers.Count > 0)
                {

                    foreach (Speler s in spelers)
                    {
                        lstSpelers.Items.Add(s.Voornaam + " " + s.Familienaam);
                    }

                    lstSpelers.SelectedIndex = 0;

                }

                teams = TeamDB.GetTeams();

                if (teams.Count > 0)
                {
                    int index = 0;
                    foreach (Team t in teams)
                    {
                        treeTeams.Nodes.Add(t.Naam);
                        if (t.Spelers.Count > 0)
                        {
                            foreach (Speler s in t.Spelers)
                            {
                                treeTeams.Nodes[index].Nodes.Add(s.Voornaam + " " + s.Familienaam);
                            }
                        }
                        index++;
                    }

                    treeTeams.SelectedNode = treeTeams.Nodes[0];

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void btnMaakTeam_Click(object sender, EventArgs e)
        {
            string teamNaam = txtTeamNaam.Text;

            treeTeams.Nodes.Add(teamNaam);

            try
            {
                TeamDB.VoegTeamToe(teamNaam);
                teams = TeamDB.GetTeams();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void btnVoegSpelerToe_Click(object sender, EventArgs e)
        {
            int selectedTeam, selectedSpeler;

            if (treeTeams.SelectedNode.Parent != null)
            {

                treeTeams.SelectedNode = treeTeams.SelectedNode.Parent;

            }

            selectedSpeler = lstSpelers.SelectedIndex;
            selectedTeam = treeTeams.SelectedNode.Index;

            try
            {
                teams[selectedTeam].VoegSpelerToe(spelers[selectedSpeler]);
                TeamDB.VoegSpelerToe(teams[selectedTeam].Id, spelers[selectedSpeler].Id);

                treeTeams.SelectedNode.Nodes.Add(spelers[selectedSpeler].Voornaam + " " + spelers[selectedSpeler].Familienaam);
                treeTeams.SelectedNode.Expand();
                treeTeams.SelectedNode = treeTeams.Nodes[selectedTeam].Nodes[teams[selectedTeam].Spelers.Count - 1];
                treeTeams.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void btnVerwijderSpeler_Click(object sender, EventArgs e)
        {
            int selectedTeam, selectedSpeler;

            if (treeTeams.SelectedNode.Parent != null)
            {

                selectedTeam = treeTeams.SelectedNode.Parent.Index;
                selectedSpeler = treeTeams.SelectedNode.Index;

                TeamDB.DeleteSpelerFromTeam(teams[selectedTeam].Spelers[selectedSpeler].Id, teams[selectedTeam].Id);
                teams[selectedTeam].Spelers.RemoveAt(selectedSpeler);
                treeTeams.SelectedNode.Remove();

            }
            else
            {
                MessageBox.Show("Gelieve een speler te selecteren om uit het team te verwijderen.","QuizzAdmin",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }

            treeTeams.Focus();
        }

        private void txtZoek_TextChanged(object sender, EventArgs e)
        {
            int item = lstSpelers.FindString(txtZoek.Text);

            if (item >= 0)
            {
                lstSpelers.SelectedIndex = item;
            }

        }

        private void btnVerwijderTeam_Click(object sender, EventArgs e)
        {
            int selectedTeam = treeTeams.SelectedNode.Index;
            TeamDB.DeleteTeam(teams[selectedTeam].Id);
            teams.RemoveAt(selectedTeam);
            treeTeams.SelectedNode.Remove();
        }
    }
}
